Embodiments presented herein generally relate to Ethernet link aggregation, and more specifically, to providing link aggregation over multiple logical Ethernet ports.
Generally, link aggregation bonds multiple physical network interface ports of a network device, such as a switch, to a single logical port. When bonded, a link aggregate (i.e., the multiple network interfaces) appears to link partners (e.g., a host computer and a switch) as a single network interface. For example, the link aggregate is associated with its own Media Access Control (MAC) address mapped to each linked physical network interface. Link aggregation provides increased throughput, redundancy, fault tolerance, and load balancing in a computer network, such as in a cloud computing environment.
Currently, link aggregation techniques also allow multiple logical ports to be bonded with one another, i.e., share a single physical network interface port. For example, such techniques may be adapted in a single-root I/O virtualization (SR-IOV) architecture. In an SR-IOV architecture, a PCIe device, such as a network adapter, can separate access to resources using physical functions (PFs) and virtual functions (VFs), which allow the network adapter to appear to be multiple distinct network adapters. As a result, an SR-IOV architecture may allow logically independent entities, e.g., virtual machines executing on a given host, to share a physical link with one another. For example, a virtual machine may create, via SR-IOV, multiple logical ports from different physical ports of a network adapter and bond the logical ports together using link aggregation. Another virtual machine on the host may similarly aggregate logical ports using such methods.
However, aggregating logical ports may cause issues with the link partner that has the physical ports, usually a switch. For instance, the switch is generally unaware of any logical ports beyond one on a given physical port. For example, assume that a virtual machine X, assigns a logical port A to a first physical port, assigns a logical port B to a second physical port, and creates a link aggregate AB from the logical ports. Further, assume that a virtual machine Y assigns a logical port C to the first physical port, assigns a logical port D to the second physical port, and creates a link aggregate CD from the logical ports. Also assume that the switch aggregates the first and second physical ports. In such a case, the aggregation scheme operates normally, provided that all logical ports are active (or if logical ports A and B are both down, or if logical ports C and D are both down). However, if a single logical port goes offline, the switch may be unable to deliver a given frame to its intended destination. Continuing the previous example, assume that logical port D becomes inactive. In such a case, the switch would not recognize that frames targeted towards logical aggregate CD need to be sent to only the first physical port. That is, frames sent to the second physical port will only be received at logical port B, and thus not by virtual machine Y.